The present invention relates to controlling the execution of transactions in computer systems, and particularly relates to controlling the execution of multiple computer system processes for each transaction.
A transaction is a unit of work implemented in a combination of multiple processes. In some cases, an already-committed transaction needs to be canceled (UNDO) and re-executed (REDO) (hereinafter referred to as “UNDO/REDO”). For example, such operations are required when errors in the past administrative process, such as an error made by a customer himself/herself and an input error in the administrative process, are noticed and are needed to be corrected.
Various techniques have conventionally been proposed for such cancellation and re-execution of a transaction.
In Japanese Unexamined Patent Application Publication No. Sho 63-10252, log data are recorded in a partitioned fashion by a unit of recovery (UR) in a transaction recovery stream (TRS) and are classified into subsets according to functions (BEGIN, COMMIT, ABORT, END, REDO, and UNDO). Then, in response to UR state changes (COMMIT/ABORT), the subsets (REDO or UNDO) of the log data in a given UR partition on the TRS is mapped into a resource recovery stream (RRS). At the termination of the UR state changes, all log data belonging to the given partition is discarded from the TRS by using the RRS.
In Japanese Patent Application Publication No. Hei 9-204338, when a failure occurs during recovery, a preset number of compensation operations are first performed, and then, a NextundoVSN record, which includes a sequential number of an audit record currently scanned, is written in a log. While the log is scanned backward after the failure, records from the NextundoVSN record to the audit record having the sequential number included in the NextundoVSN record are ignored.
In International Patent Publication No. WO/2004/055674, log data showing the progress of transaction processing is recorded in a log file accessible by all distributed transaction processors constituting a distributed transaction processing system. When a failure occurs in one of the distributed transaction processors, the log data stored in the log file is used to perform a failure recovery operation on the transaction related to the distributed transaction processor in which the failure has occurred. After the recovery from the failure, the log data stored in the log file is used to resume the processing of a local transaction interrupted by the failure.
Moreover, techniques related to a database (DB) update, which is an example of a process included in a transaction, include the following. One technique (for example, refer to Japanese Patent Application Publication No. Hei 8-235046) is one not needing a lock mechanism for shared data. In this technique, an update result of shared data is written into update storage, and in the meantime, an operation of referencing to the shared data is performed by referring to the shared data of the previous version stored in a shared storage. Another technique (for example, refer to Japanese Patent Application Publication No. Hei 10-69418) is for guaranteeing the atomic execution of a global transaction. In this technique, the global transaction configured as a whole of group of transactions is performed as a set of chained hierarchy.
Furthermore, one technique related to UNDO and REDO (for example, refer to Japanese Patent Application Publication No. 2005-18774) is for automatically creating and tracking UNDO information so that a developer of a user interface object would not have to be responsible for the creation and the tracking of the UNDO information.
However, in spite of the above teachings there is need for improvement with regard to performing UNDO/REDO in an environment where multiple processes provided by multiple providers are performed in response to a request of a requester.